package com.kx.game.center.platform;

import java.util.List;

import com.kx.game.center.common.enums.IndexedEnum;
import com.kx.game.center.utils.EnumUtil;
import com.kx.game.center.utils.StringUtils;

/**
 * 平台
 * 
 * @author wenji.fan
 * @since 2013年8月5日
 * 
 */
public enum PlatformType implements IndexedEnum {
	/** 小米 */
	XIAOMI(1, false, false),
	/** 360 */
	QIHU_360(2, false, false),
	/** UC */
	UC(3, false, false),
	/** 安致 */
	ANZHI(4, false, false),
	/** 当乐 */
	DANGLE(5, false, false),
	/** PPS */
	PPS(6, false, false),
	/** 豌豆夹 */
	WANDOUJIA(7, false, false),
	/** 百度web开放平台 */
	BAIDU_WEB(8,BigPlatformType.WEB, false),
	/** 百度移动平台 */
	BAIDU_MOBILE(9, false, false),
	/** google台湾版 */
	GOOGLE_PLAY(10, BigPlatformType.GOOGLE_PLAY, true),
	/** google英文版 */
	GOOGLE_PLAY_ENG(11,BigPlatformType.GOOGLE_PLAY, false),
	/** 腾讯web */
	TENCENT_WEB(12,BigPlatformType.WEB, false),
	/** 易幻平台 */
	EFUN(13, false, false),
	/** 金山 */
	JINSHAN(14, false, false),
	/** 起点 */
	QIDIAN(17, false, false),
	/** 日本Google */
	GOOGLE_PLAY_JP(18,BigPlatformType.GOOGLE_PLAY, false),
	/** pp助手 */
	PP(19, false, false),
	/** 飞豆平台 */
	FEIDOU_PLATFORM(20, false, false),
	/**
	 * google 越南
	 */
	GOOGLE_PLAY_VIETNAM(21,BigPlatformType.GOOGLE_PLAY, false),
	/**
	 * winphone平台，openxlive
	 */
	OPEN_X_LIVE(22, false, false),
	/** google 泰国 */
	GOOGLE_PLAY_THAILAND(23,BigPlatformType.GOOGLE_PLAY, false),
	/** egret */
	EGRET(24, false, false),
	/** 腾讯android应用宝 */
	TENCENT(25, false, false),
	/** 飞流  */
	FEILIU(26),
	/** 海马玩 */
	HAIMA(27),
	/** 飞流统一 */
	FEILIU_FU(28),
	/** anysdk */
	ANY_SDK(29),
	/** 快用 */
	KUAIYONG(30),
	/** 游戏多 */
	YOUXIDUO(31),
	/** 长尾  */
	CHANGWEI(32, -1, "changwei"),
	/** 魅族 */
	MEIZU(33, 32, "meizu"),
	/** VIVO */
	VIVO(34, -1, "vivo"),
	/** OPPO  */
	OPPO(35, -1, "oppo"),
	/** 9splay */
	TW_9SPLAY(36, -1, "tw9splay"),
	/** mycard */
	TW_MYCARD(37, -1, "twmycard"),
	;
	
	private final int index;

	/** 是否是google play */
	private boolean isGooglePlay = false;
	
	private int maxOrderLength = -1 ;

	/**
	 * 按索引顺序存放的枚举数组
	 */
	private static final List<PlatformType> indexes = IndexedEnum.IndexedEnumUtil
			.toIndexes(PlatformType.values());

	private BigPlatformType bigType = BigPlatformType.CHINA_ANRDOID;
	
	private boolean isNeedReport = false ;
	
	private String channelNumber = "" ;
	
	PlatformType(int index) {
		this.index = index;
		this.isNeedReport = true ;
	}
	
	PlatformType(int index,BigPlatformType bigType, boolean isNeedReport) {
		this.index = index;
		this.bigType = bigType;
		this.isNeedReport = isNeedReport ;
	}

	PlatformType(int index, boolean isGooglePlay) {
		this(index);
		this.isGooglePlay = isGooglePlay;
	}
	
	PlatformType(int index, boolean isGooglePlay, boolean isNeedReport) {
		this(index);
		this.isGooglePlay = isGooglePlay;
		this.isNeedReport = isNeedReport ;
	}
	
	private PlatformType(int index, int maxOrderLength){
		this(index) ;
		this.maxOrderLength = maxOrderLength ;
	}

	private PlatformType(int index, int maxOrderLength, String channelNumber){
		this(index) ;
		this.maxOrderLength = maxOrderLength ;
		this.channelNumber = channelNumber ;
	}
	
	public BigPlatformType getBigType() {
		return bigType;
	}
	
	public static PlatformType indexOf(final int index) {
		return EnumUtil.valueOf(indexes, index);
	}

	@Override
	public int getIndex() {
		return index;
	}

	public boolean isGooglePlay() {
		return isGooglePlay;
	}

	public int getMaxOrderLength() {
		return maxOrderLength;
	}

	public static PlatformType getMaxPlatformType() {
		for (int i = indexes.size() - 1; i > 0; i--) {
			if (indexes.get(i) != null)
				return indexes.get(i);
		}
		return null;
	}

	public boolean isNeedReport() {
		return isNeedReport;
	}
	
	public boolean hasChannelNumber(){
		return !StringUtils.isEmpty(channelNumber) ;
	}

	public String getChannelNumber() {
		return channelNumber;
	}

}
